import bisect
for _ in range(int(input())):
n, x = map(int, input().split())
a = list(map(int, input().split()))
p = [0] * (n + 1)
d = [0] * (n + 3)
for i in range(n):
p[i + 1] = p[i] + a[i]
res = 0
for i in range(n - 1, -1, -1):
v = p[i] + x
idx = bisect.bisect_left(p, v)
if idx > n:
d[i] += (n - i)
elif v == p[idx]:
d[i] += (idx - i) + (d[idx + 1] if idx + 1 < n + 3 else 0)
else:
d[i] += (idx - i - 1) + (d[idx] if idx < n + 3 else 0)
res = sum(d[:n])
print(res)
1025D - Recovering BST | 439A - Devu the Singer and Churu the Joker |
1323A - Even Subset Sum Problem | 1095A - Repeating Cipher |
630F - Selection of Personnel | 630K - Indivisibility |
20B - Equation | 600B - Queries about less or equal elements |
1015A - Points in Segments | 1593B - Make it Divisible by 25 |
680C - Bear and Prime 100 | 1300A - Non-zero |
1475E - Advertising Agency | 1345B - Card Constructions |
1077B - Disturbed People | 653A - Bear and Three Balls |
794A - Bank Robbery | 157A - Game Outcome |
3B - Lorry | 1392A - Omkar and Password |
489A - SwapSort | 932A - Palindromic Supersequence |
433A - Kitahara Haruki's Gift | 672A - Summer Camp |
1277A - Happy Birthday Polycarp | 577A - Multiplication Table |
817C - Really Big Numbers | 1355A - Sequence with Digits |
977B - Two-gram | 993A - Two Squares |